The present invention relates to data storage systems, and more specifically, this invention relates to implementing RAID arrays which support data compression.
RAID involves a data storage virtualization technology which combines multiple physical data storage (e.g., memory) components into one or more logical units. Storing data in these logical units involves actually distributing or “striping” the data across the different physical data storage components. In doing so, the one or more logical units are able to improve data redundancy and/or overall performance in comparison to traditional data storage schemes.
Data is distributed across the different physical data storage components in a RAID array using one of several schemes, which are also referred to as “RAID levels”. Each of the RAID levels are typically referred to using the word “RAID” followed by a number, such as RAID 0 or RAID 1. Each scheme, or RAID level, provides a different data distribution layout which balances reliability, availability, performance, and capacity in different manners. For example, RAID levels greater than RAID 0 provide protection against unrecoverable sector read errors, as well as against failures of whole physical drives.
While RAID arrays provide a number of improvements to data storage, they have previously been unable to effectively support compressed data. The compressibility of data varies greatly depending on a number of factors, including the type of data itself. Each of the storage drives included in a RAID array, and even the different storage components included therein (e.g., the different disks in a hard disk drive), may also have a significant effect on the compressibility of the data stored thereon. Thus, the actual amount of compressed data that can be stored in memory will vary significantly.
The overall capacity of the RAID array is also directly affected by these differences in achievable data compression, thereby subjecting the RAID array to data overflow situations. While these variations are relatively straightforward to address in standard data storage schemes by simply adding additional storage components to accommodate any excess data, it is significantly more difficult to do so in the context of RAID arrays. As a result, conventional RAID arrays have been unable to support compressed data.